package com.dl.mall.mapper;

import com.dl.mall.entity.Cart;
import com.dl.mall.entity.vo.CartVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 购物车类
 * @author DL
 * @create 2022-03-24 20:14
 */
@Mapper
public interface CartMapper {

    /**
     * 普通减少，无逻辑
     * @param userId 用户名
     * @param specsId 产品规格id
     * @return 影响行数
     */
    int decreaseCart(@Param("userId") String userId, @Param("specsId") String specsId);

    /**
     * 普通添加，无逻辑
     * @param userId 用户名
     * @param specsId 产品规格id
     * @return 影响行数
     */
    int increaseCart(@Param("userId") String userId, @Param("specsId") String specsId);


    /**
     * 向购物车添加商品
     * @param userId 用户名
     * @param specsId 产品规格id
     * @return 影响行数
     */
    int insertCart(@Param("userId") String userId, @Param("specsId") String specsId);

    /**
     * 删除购物车某项商品
     * @param userId 用户名
     * @param specsIdList 产品规格id
     * @return 影响行数
     */
    int deleteCart(@Param("userId") String userId, @Param("specsIdList") List<Object> specsIdList);


    /**
     * 向购物车添加商品
     * @param userId 用户名
     * @param specsId 产品规格id
     * @param count 个数
     * @return 影响行数
     */
    int updateCart(@Param("userId") String userId, @Param("specsId") String specsId, @Param("count") int count);

    /**
     * 根据 用户id 和 规格id（sku） 查询购物车，用于逻辑增加购物车商品数量
     * @param userId 用户名
     * @param specsId 产品规格id
     * @return 购物车
     */
    Cart queryCartByUserIdAndSpecsId(@Param("userId") String userId, @Param("specsId") String specsId);

    /**
     * 根据 用户id 查询购物车所有产品
     * @param userId 用户id
     * @return 购物车所有产品
     */
    List<CartVo> queryAllCart(String userId);
}
